var editObj = null,
    ptable = null,
    treeGrid = null,
    tableId = 'treeTable',
    layer = null;
notice = null;
layui.config({
    base: '../lay/dist/extend/'
}).extend({
    treeGrid: 'treeGrid',

}).use(['jquery', 'treeGrid', 'layer', 'form', 'notice', 'dropdown'], function () {
    $ = layui.jquery;
    treeGrid = layui.treeGrid;//很重要
    form = layui.form;
    notice = layui.notice;
    dropdown = layui.dropdown;
    layer = layui.layer;


    ptable = treeGrid.render({
        id: tableId
        , elem: '#' + tableId
        , idField: 'id'
        , url: '/menu/all'
        , cellMinWidth: 100
        , treeId: 'id'//树形id字段名称
        , treeUpId: 'pid'//树形父id字段名称
        , treeShowName: 'title'//以树形式显示的字段
        , cols: [
            [
                // {field: 'id',hide:true}, //可以不用显示，但是能获取到
                {
                    field: 'xid', width: 80, title: '序号', sort: true, templet: function (d) {
                        return d.LAY_INDEX;
                    }
                },
                {field: 'title', title: '菜单名称'},
                {
                    field: 'icon', title: '菜单图标', align: "center",templet: function (d) {
                        return '<i class="fa ' + d.icon + '"></i>'
                    }
                },
                {field: 'sort', title: '菜单排序'},
                {field: "remark", title: '备注信息'},
                {
                    field: "createtime", title: '创建时间', templet: function (d) {
                        return "" + ConverterDate(d.createtime)

                    }
                },
                {
                    field: "updatetime", title: '更新时间', templet: function (d) {
                        return "" + ConverterDate(d.updatetime)

                    }
                },
                {
                    field: "power", title: '用途', templet: function (d) {
                        return d.power == 1 ? "前台" : "后台";
                    }
                },
                {
                    field: "ismenu", title: '菜单类型', templet: function (d) {
                      switch (d.ismenu) {
                          case 1:
                              return "模块"
                          case 2:
                              return "目录";
                          case 3:
                              return "菜单";
                          case 4:
                              return "功能";

                      }
                    }
                },
                {field: "state", title: '菜单状态', templet: '#switchTpl'},

                {
                    width: 100, title: '操作', align: 'center' /*toolbar: '#barDemo'*/
                    , templet: "#tool"
                }

            ]
        ]
        , page: false,// 是否分页
        done: function (res) {
            for (var i = 0; i < res.data.length; i++) {
                dropdown.suite("#layuidropdown_" + res.data[i].id, {
                    data: res.data[i]
                });
            }
            MenuState(false)
            //禁用菜单
            $(".laytable-cell-1-state>p input[value='18']").attr("disabled","true");
        }
    });


    //控制菜单状态
    form.on('switch(menuState)', function (data) {
        let state = this.checked ? 1 : 2;
        let id = data.elem.value;
        //更新菜单状态
        $.post('/menu/update', {id: id, enabled: state}, res => {
            if (res.success) {
                notice.success("操作成功,下次刷新页面生效");
            } else {
                notice.error("操作失败")
            }
        })
    });

    //  工具栏监听
    treeGrid.on('tool(' + tableId + ')', function (obj) {
        switch (obj.event) {
            case "edit":
                edit(obj.data);
                break;
            case "add":
                addData = obj.data;
                isChild = false
                add()
                break;
            case "addChild":
                addData = obj.data;
                isChild = true
                add()
                break;
            case "del":
                del(obj)
                break
            case "info":
                info(obj)
                break;
        }

    });


    /**
     * 控制菜单的展开和折叠
     * @param state true 展开 false 折叠;
     * @constructor
     */
    function MenuState(state) {
        //tableId 容器的Id  treeGrid 组件的引用
        for (let p of treeGrid.cache[tableId].data.treeList) {
            p.is_open = state
            let tr = getTr(p)
            if (state) {
                tr.find('.layui-tree-head').html('&#xe625;');
            } else {
                tr.find('.layui-tree-head').html('&#xe623;');
            }
            for (let child of p.children) {
                let temp = getTr(child);
                if (state) {
                    temp.show();
                } else {
                    temp.hide()
                }
            }
        }
    }

    /**
     * 传入表格行对象返回当前行的jquery对象：
     * @param d
     * @returns {*}
     */
    function getTr(d) {
        return treeGrid.getClass(tableId).layBody.find('tr[data-index="' + d["LAY_TABLE_INDEX"] + '"]')
    }


});

/**
 * 全局弹框Id
 * @type{Object}
 */
let idx = 1;
//<editor-fold desc="工具栏方法">
/**
 * 添加的数据
 */
var addData;
/**
 * 是否是添加子菜单
 * @type {boolean}
 */
var isChild;

//  这个是增加；
function add() {
    console.log("添加的数据",addData)
    transmitData = null;
    idx = layer.open({
        title: '添加课表信息',
        type: 2,
        offset: 100,
        shade: 0.2,
        maxmin: true,
        shadeClose: true,
        area: ['60%', '70%'],
        content: '/menu/add',
    });
}

/**
 * 关闭当前的弹框
 */
function closePopout() {
    layer.close(idx)
}

function del(obj) {
    let data = obj.data
    let canDel = data.children.length > 0;
    if (canDel) {
        notice.error("该菜单下还有子菜单不能进行删除哦！！")
    } else {
        $.post("/menu/del", {id: data.id}, res => {
            if (res.success) {
                notice.success("删除成功了~")
                obj.del()
            } else {
                notice.error("操作没有成功。。" + res.data)
            }
        })
    }

}

var transmitData;

function info(obj) {
    transmitData = obj;
    notice.info("功能正在抓紧研发中....")
}

function getTransmitData() {
    return transmitData;
}

function edit(data) {
    transmitData = data;
    console.log(transmitData)
    idx = layer.open({
        title: '编辑课表',
        type: 2,
        offset: 100,
        shade: 0.2,
        maxmin: true,
        shadeClose: true,
        area: ['60%', '70%'],
        content: '/menu/edit',
    });
}

//</editor-fold>
